package org.ktm.crypt;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class KTMCrypt {

	private static DesHelper	cipher	= new DesHelper( "_ktmcrypt_" );

	public static void main( String [] args ) {
		try {
			System.out.print( SHA1( "keng" ) );
		}
		catch ( NoSuchAlgorithmException e ) {
			e.printStackTrace();
		}
		catch ( UnsupportedEncodingException e ) {
			e.printStackTrace();
		}
	}

	public static String encrypt( String text ) {
		return cipher.encrypt( text );
	}

	public static String decrypt( String text ) {
		return cipher.decrypt( text );
	}

	private static String convertToHex( byte [] data ) {
		StringBuffer buf = new StringBuffer();
		for ( int i = 0; i < data.length; i++ ) {
			int halfbyte = ( data[ i ] >>> 4 ) & 0x0F;
			int two_halfs = 0;
			do {
				if ( ( 0 <= halfbyte ) && ( halfbyte <= 9 ) )
					buf.append( (char) ( '0' + halfbyte ) );
				else buf.append( (char) ( 'a' + ( halfbyte - 10 ) ) );
				halfbyte = data[ i ] & 0x0F;
			}
			while ( two_halfs++ < 1 );
		}
		return buf.toString();
	}

	public static String SHA1( String text ) throws NoSuchAlgorithmException,
											UnsupportedEncodingException {
		MessageDigest md;
		md = MessageDigest.getInstance( "SHA-1" );
		byte [] sha1hash = new byte[ 40 ];
		md.update( text.getBytes( "UTF-8" ), 0, text.length() );
		sha1hash = md.digest();
		return convertToHex( sha1hash );
	}

	public static String MD5( String to ) throws Exception {
		MessageDigest m = MessageDigest.getInstance( "MD5" );
		//m.update(to.getBytes(),0,to.length());
		m.update( to.getBytes() );

		String result = "";
		byte [] of = m.digest();
		for ( int i = 0; i < 16; i++ ) {
			result += (char) ( of[ i ] & 0xff );
		}

		return result;
	}

}
